Docker —— 从入门到实践
Docker —— 从入门到实践
一.什么是 Docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
二.什么是boot2docker?
因为docker是运行在linux操作系统上的容器软件,不支持windows、unix(macos),所以要想在windows电脑上或者mac电脑上安装doker,就要有linux环境,那么这需要一个基于linux的docker运行环境
boot2docker就是一个基于linux内核的docker容器环境
这个环境只有安装在一个虚似机上:virtualBox
boot2docker代码托管在github上,地址为:
https://github.com/boot2docker/boot2docker
安装请参考github上介绍
三.怎么用?
1. 启动docker
- 打开命令行,输入:boot2docker start
- 检查容器是否启动:boot2docker status
- 登陆连接docker容器:boot2docker ssh
- 成功进入后会有出现如下画面:
2. 下载centos并制作os镜像
- docker pull centos:6.7
- 下载完成后看看他的imageId,输入:docker images
- 然后启动并进入centos容器,打开命令行工具:docker run -t -i 7e8f /bin/bash
- 安装一个wget:yun install -y wget
- 安装一个mysql,先检查:yum list | grep mysql
- 安装(需要安装server版,这样才能设置开机启动):yun install -y mysql-server.x86_64
- 安装nginx:http://www.myhack58.com/Article/sort099/sort0102/2014/44894.htm
- 安装node:<>
- 安装ifconfig
从打开的容器出来后,怎么进去之前的容器呢?
docker ps -a //查看打开的所有的容器
如果发现之前容器的状态是Exited,那么要先将容器重新up:
docker start [containId]
重新打开容器:
docker exec -it [containId] bash
四.什么是镜像?
镜像相当于打包好的容器,这个容器里有你的应用程序所需要的环境,docker中如果有需要用哪个服务,直接docker pull 镜像名就可以拿来用了
如何将hexo博客作为镜像部署到daocloud上
因为国内的GWT的原因,https://hub.docker.com访问实在太慢,我选择了使用国内的daocloud来部署我的镜像。
准备好dockerfile:
touch dockerfile 或者 vi dockerfile都可以
# The FROM instruction sets the Base Image for subsequent instructions.
# Using Nginx as Base Image
FROM node:4.2.2
RUN \
mkdir -p /usr/src/app/blog && cd /usr/src/app/blog && \
# install hexo
npm install hexo-cli -g && \
hexo init && npm install && \
# install plugins for hexo
npm install hexo-generator-sitemap --save && \
npm install hexo-generator-baidu-sitemap --save
COPY . /usr/src/app/blog
VOLUME ["/usr/src/app/blog/source"]
VOLUME ["/usr/src/app/blog/themes"]
WORKDIR /usr/src/app/blog/
# The EXPOSE instruction informs Docker that the container listens on the specified network ports at runtime
EXPOSE 80
具体语法请看这里:dockerfile语法
构建代码生成镜像
由于我是用github帐号登陆的,所以daocloud可以直接获取我的代码:
部署博客
点击部署,部署完了以后可以设置自有域名,如果你没有域名,就直接域名daocloud提供的默认域名
参考学习: